package com.miao.font.web.httpclient;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.miao.font.entity.Item;
import com.miao.font.entity.TbItemDesc;
import com.miao.font.entity.TbItemParamItem;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;

/**
 * 通过httpclien接口获取后台商品数据
 */
@Service
public class ItemService {

    @Autowired
    private ApiService apiService;

    private  static final ObjectMapper MAPPER =new ObjectMapper();

    /**
     * 查询商品信息
     * @param id
     * @return
     */
    public Item queryById(Long id){
        //将时间格式转换为String
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        MAPPER.setDateFormat(format);
        String url="http://manage.taotao.com/api/item/"+id;
        try{
            String jsonDate = apiService.doGet(url);
            //判断是否为空，如果不为空就将json数据反序列化为item对象
            if(StringUtils.isEmpty(jsonDate)){
                return null;
            }

            //反序列化
            Item tbItem = MAPPER.readValue(jsonDate, Item.class);
            return tbItem;
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }


    /**
     * 显示商品描述数据
     * @return
     */
    public TbItemDesc qeruyDescByItemId(Long itemId){
        //将时间格式转换为String
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        MAPPER.setDateFormat(format);
        String url="http://manage.taotao.com/api/itemDesc/"+itemId;
        try{
            String jsonDate = apiService.doGet(url);
            //判断是否为空，如果不为空就将json数据反序列化为item对象
            if(StringUtils.isEmpty(jsonDate)){
                return null;
            }

            //反序列化
            TbItemDesc tbItemDesc = MAPPER.readValue(jsonDate, TbItemDesc.class);
            return tbItemDesc;
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 查询规格参数
     * @param itemId
     * @return
     */
    public String queryItemParamItemById(Long itemId) {
         //将时间格式转换为String
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        MAPPER.setDateFormat(format);
        String url="http://manage.taotao.com/api/item/param/item/"+itemId;
        try{
            String jsonData = apiService.doGet(url);
            //判断是否为空，如果不为空就将json数据反序列化为item对象
            if(StringUtils.isEmpty(jsonData)){
                return null;
            }
            // 将json数据反序列
            TbItemParamItem tbItemParamItem = MAPPER.readValue(jsonData, TbItemParamItem.class);
            //解析json格式数据为HTML
            String paramData = tbItemParamItem.getParamData();

            ArrayNode arrayNode = (ArrayNode) MAPPER.readTree(paramData);

            StringBuilder sb = new StringBuilder();
            sb.append("<table cellpadding=\"0\" cellspacing=\"1\" width=\"100%\" border=\"0\" class=\"Ptable\"><tbody>");

            for (JsonNode param : arrayNode) {
                sb.append("<tr><th class=\"tdTitle\" colspan=\"2\">" + param.get("group").asText()
                        + "</th></tr>");
                ArrayNode params = (ArrayNode) param.get("params");
                for (JsonNode p : params) {
                    sb.append("<tr><td class=\"tdTitle\">" + p.get("k").asText() + "</td><td>"
                            + p.get("v").asText() + "</td></tr>");
                }
            }

            sb.append("</tbody></table>");
            return sb.toString();

        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
}
